home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / datamaster_lib.lha / Datamaster / Developer / Examples / Asm / recognizers / Executable < prev    next >
Text File  |  1997-05-01  |  1KB  |  87 lines

  1.  
  2.  
  3.  
  4.         section "Recognizer",code
  5.  
  6.     incdir "includes:"
  7.     include    "asm:datamaster.library/datamaster.i"
  8.     include    "asm:datamaster.library/datamaster_lib.i"
  9.  
  10. ;EXEC
  11.     incdir "includes:"
  12.     include "exec/exec_lib.i"
  13.     include    "exec/exec.i"
  14.  
  15.         RECOHEADER reco
  16. reco:    dc.l    DMR_DMVersion,2
  17.     dc.l    DMR_Version,1<<16+2
  18.     dc.l    DMR_SubTypesTable,CheckTable
  19.     dc.l    DMR_Name,exename
  20.     dc.l    DMR_Descr,exeDescr
  21.     dc.l    DMR_Flags,RECOF_CheckData+RECOF_CheckPatt
  22.     dc.l    DMR_Class,DMCLASSF_SYSTEM
  23.     dc.l    DMR_Pri,PRI_FREQUENT
  24.     dc.l    TAG_END
  25.  
  26.  
  27. prog_c:
  28. lib_c:
  29. dev_c:
  30.     move.l    (a0),d1
  31.     cmp.l    #$3f3,d1
  32.     beq.s    .ok
  33.     moveq    #0,d0
  34.     rts
  35. .ok:    move.l    a0,a1
  36.     cmp.l    #512,d0
  37.     blo.s    .ok2
  38.     move.l    #512,d0        ;d0= min(d0,512)
  39. .ok2:    lsr.l    #1,d0        ;/2
  40. .loop:    move.w    (a0)+,d1
  41.     cmp.w    #RTC_MATCHWORD,d1
  42.     beq.s    .found
  43.     dbra    d0,.loop
  44.     bra.s    .end0
  45.     
  46. ;I don't check for the validity of the "magic" APTR after RTC_MATCHWORD
  47. ;but it's Ok anyway.
  48.  
  49. .found:
  50.     lea    -2(a0),a0
  51.     move.b    RT_TYPE(a0),d0
  52.  
  53.     lea    lib_n(pc),a1
  54.     cmp.b    #NT_LIBRARY,d0
  55.     beq.s    .end
  56.  
  57.     lea    dev_n(pc),a1
  58.     cmp.b    #NT_DEVICE,d0
  59.     beq.s    .end
  60.  
  61. .end0:    lea    exename(pc),a1
  62.  
  63. .end:    move.l    a1,d0
  64.     rts
  65.  
  66. exeDescr:
  67.     dc.b    "Progs,libs,handlers etc...!",0
  68. exename:
  69.     dc.b    "Executable",0
  70.  
  71. dev_p:    dc.b    "*."
  72. dev_n:    dc.b    "Device",0,$ff
  73.  
  74. lib_p:    dc.b    "*."
  75. lib_n:    dc.b    "Library",0,$ff
  76.  
  77.  
  78.     even
  79.  
  80.  
  81. CheckTable:
  82.     dc.l    prog_c,-1,exename
  83.     dc.l    lib_c,lib_p,lib_n
  84.     dc.l    dev_c,dev_p,dev_n
  85.     dc.l    0,0,0
  86.  
  87.